{
 "cells": [
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 盒图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAp4AAAIjCAYAAACqIhs4AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAn6UlEQVR4nO3deZCU9Z348c8AOplGYNGBIOsMg4hOe0QcUGtDKsrGRI1H2FpNyjgGVEjc4G0OiBq1VIgrpXjFIxUNceKVbNRdj3izmkI3Oh6Fuz0K0RFKPJjayKAzjsf074/8nNoJcg0+326Y16uqi/TTT/f3g1Wt7zzdz9MVxWKxGAAAkLEBpR4AAID+QXgCAJCE8AQAIAnhCQBAEsITAIAkhCcAAEkITwAAkhCeAAAkITwBAEhCeAL9zvnnnx8VFRXR1tZW6lE2yfTp06Ourq7UYwD0mfAE6Afmzp0bd911V6nHAPo54QnQDwhPoBwITwAAkhCeQL/V1tYW3/zmN2Po0KGxww47xGmnnRbvv/9+r30++uijuPDCC2PcuHFRWVkZdXV18ZOf/CS6uroiIqJYLMaUKVNixIgR8fbbb/c874MPPoi99torxo0bF++99946Z1i0aFFUVFTE7bffHj/5yU9i1KhRMXjw4DjyyCNjxYoVG/w7vPfee3HWWWdFTU1NVFZWxm677Rbz58+PYrHYs09FRUW89957sXDhwqioqIiKioqYPn36Jv7TAth8g0o9AECpfPOb34y6urqYN29ePPXUU3HllVfGX/7yl/j1r3/ds8+MGTNi4cKFcdRRR8VZZ50V//Vf/xXz5s2LQqEQd955Z1RUVMSNN94YX/jCF+Kkk06K3//+9xERcd5558V///d/x6JFi2Lw4MEbnOXiiy+OioqK+PGPfxxvv/12LFiwIA466KB4/vnno6qq6lOfUywW48gjj4zHHnssTjzxxJgwYUI88MAD8cMf/jBef/31uPzyyyMi4uabb44ZM2bEfvvtF9/97ncjImLcuHGb+48PYNMVAfqZ8847rxgRxSOPPLLX9u9///vFiCi+8MILxWKxWHz++eeLEVGcMWNGr/1+8IMfFCOi+Oijj/Zsu/7664sRUWxqaio+9dRTxYEDBxZPP/30Dc7y2GOPFSOi+Pd///fF9vb2nu133HFHMSKKV1xxRc+2adOmFceMGdNz/6677ipGRPGiiy7q9ZpHHXVUsaKiorhs2bKebYMHDy5OmzZtg/MAZMlH7UC/NWvWrF73TznllIiIuO+++3r9eeaZZ/ba76yzzoqIiHvvvbdn23e/+904+OCD45RTTonjjjsuxo0bF3Pnzt3oWb7zne/EkCFDeu4fddRRseOOO/bM8Gnuu+++GDhwYJx66qlrzVcsFuP+++/f6PUBUvBRO9BvjR8/vtf9cePGxYABA6K1tTUiIl577bUYMGBA7LLLLr32GzVqVPzd3/1dvPbaa722//KXv4xx48bF0qVLY/Hixev8iHxjZqmoqIhddtmlZ5ZP89prr8Xo0aN7BWtERD6f73kcoJw44gnw/1VUVGzS9r+1aNGinpOOlixZ8pnNBbC1EJ5Av7V06dJe95ctWxbd3d09vw40ZsyY6O7uXmu/t956K955550YM2ZMz7Y33ngjTjnllPja174Whx9+ePzgBz/YpCOOf7tGsViMZcuWrfeXisaMGRMrV66MNWvW9Nre0tLS8/gnNjaeAbIkPIF+65prrul1/6qrroqIiEMPPTQiIr7+9a9HRMSCBQt67XfZZZdFRMRhhx3Ws23mzJnR3d0dv/zlL+OGG26IQYMGxYknntjrskbr8+tf/7pXQP7ud7+LN954o2eWT/P1r389Pv7447j66qt7bb/88sujoqKi13MHDx4c77zzzkbNApAV3/EE+q1XX301jjzyyDjkkEPiySefjKampvj2t78de++9d0RE7L333jFt2rS44YYb4p133okDDjgg/vSnP8XChQtj6tSpMWXKlIiIuOmmm+Lee++NX/3qV7HTTjtFxF8jtrGxMa699tr4/ve/v8FZtt9++/jSl74Uxx9/fLz11luxYMGC2GWXXWLmzJnrfM4RRxwRU6ZMibPPPjtaW1tj7733jgcffDDuvvvuOP3003tdMmnixInx8MMPx2WXXRajR4+OsWPHxv777785//gANl2Jz6oHSO6Tyyn9z//8T/Goo44qDhkypDh8+PDiySefXOzs7Oy174cffli84IILimPHji1us802xZqamuKcOXOK77//frFYLBZXrFhRHDZsWPGII45Ya51/+qd/Kg4ePLj4yiuvrHOWTy6ndOuttxbnzJlTHDlyZLGqqqp42GGHFV977bVe+/7t5ZSKxWJxzZo1xTPOOKM4evTo4jbbbFMcP358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4UmfvfHGG/Htb387dt111xgwYECcfvrppR4Jtgi///3v46tf/WqMGDEihg4dGv/wD/8QDzzwQKnHgrL3xz/+MSZPnhw77LBDVFVVRX19fVx++eWlHotNIDzps66urhgxYkScc845sffee5d6HNhiPP744/HVr3417rvvvmhubo4pU6bEEUccEc8991ypR4OyNnjw4Dj55JPj8ccfj0KhEOecc06cc845ccMNN5R6NDaS8GSdVq1aFaNGjYq5c+f2bFu8eHFsu+228cgjj0RdXV1cccUV8Z3vfGejfyoL+oMNvXcWLFgQP/rRj2LfffeN8ePHx9y5c2P8+PHxH//xHyWcGkpvQ++dffbZJ4455pjYY489oq6uLhobG+Pggw+OJ554ooRTsymEJ+s0YsSIuPHGG+P888+PZ555JtasWRPHHXdcnHzyyfGVr3yl1ONB2drU9053d3esWbMmtt9++xJMC+VjU987zz33XCxevDgOOOCAEkxLX7iAPBs0a9asePjhh2PSpEmxZMmSePrpp9f65YgDDzwwJkyYEAsWLCjNkFCGNua9ExHxr//6r/Gzn/0sWlpaYuTIkSWYFMrLht47O+20U6xatSo++uijOP/88+Pcc88t4bRsCuHJBnV2dsaee+4ZK1asiObm5thrr73W2kd4wto25r1zyy23xMyZM+Puu++Ogw46qARTQvnZ0Hvn1VdfjXfffTeeeuqpmD17dlx99dVxzDHHlGhaNoWP2tmgP//5z7Fy5cro7u6O1tbWUo8DW4wNvXduu+22mDFjRtxxxx2iE/6PDb13xo4dG3vttVfMnDkzzjjjjDj//POTz0jfDCr1AJS3Dz74IBobG+Nb3/pW7LbbbjFjxoxYsmSJjwNhAzb03rn11lvjhBNOiNtuuy0OO+ywEk8L5WNT/7vT3d0dXV1diaekr4Qn63X22WfH6tWr48orr4ztttsu7rvvvjjhhBPinnvuiYiI559/PiIi3n333Vi1alU8//zzse2228buu+9ewqmh9Nb33rnlllti2rRpccUVV8T+++8fb775ZkREVFVVuUIE/d763jvXXHNN1NbWRn19fUT89dJk8+fPj1NPPbXEU7PRirAOjz32WHHQoEHFJ554omfbq6++Whw6dGjx5z//ebFYLBYjYq3bmDFjSjQxlIcNvXcOOOCAT33vTJs2rXRDQxnY0HvnyiuvLO6xxx7FXC5XHDp0aHGfffYp/vznPy9+/PHHJZyaTeHkIgAAknByEQAASQhPAACSEJ4AACQhPAEASEJ4AgCQhPAEACAJ4QkAQBLCEwCAJIQnAABJCE8AAJIQngAAJCE8ARJYtWpVjBo1KubOnduzbfHixbHtttvGI488UsLJANKpKBaLxVIPAdAf3HfffTF16tRYvHhx7LbbbjFhwoT4xje+EZdddlmpRwNIQngCJDRr1qx4+OGHY9KkSbFkyZJ4+umno7KystRjASQhPAES6uzsjD333DNWrFgRzc3Nsddee5V6JIBkfMcTIKE///nPsXLlyuju7o7W1tZSjwOQlCOeAIl88MEHsd9++8WECRNit912iwULFsSSJUti5MiRpR4NIAnhCZDID3/4w/jd734XL7zwQmy33XZxwAEHxLBhw+Kee+4p9WgASfioHSCBRYsWxYIFC+Lmm2+OoUOHxoABA+Lmm2+OJ554Iq699tpSjweQhCOeAAAk4YgnAABJCE8AAJIQngAAJCE8AQBIQngCAJCE8AQAIAnhCQBAEsITAIAkhCcAAEkITwAAkhCeAAAk8f8AezxTPA4JcqEAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 800x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "np.random.seed(123)\n",
    "fang_data = [np.random.normal(0, std, 100) for std in range(1,4)]\n",
    "fig = plt.figure(figsize=(8,6))\n",
    "bplot = plt.boxplot(fang_data, notch=False, sym='s', vert=True)\n",
    "plt.xticks([1,2,3], ['x1', 'x2', 'x3'])\n",
    "plt.xlabel('x')\n",
    "plt.title('box plot')\n",
    "plt.show()"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 盒图细节"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAp4AAAIjCAYAAACqIhs4AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAnu0lEQVR4nO3deZDU9Z34/9cgOjuNwKIDUdYZBhGd9og6oNaGVJSNiRqPsLWalLENqJB1A945IGrUikJcKcUrqKloiLNeyUbd9Yg3qyl1o+NRutujEB2hwGtqI4POZFSmf3/k59R3glyDn3c3zONR1YX96U/3+4VVrc/6dH8+XVUqlUoBAAAZG1TuAQAAGBiEJwAASQhPAACSEJ4AACQhPAEASEJ4AgCQhPAEACAJ4QkAQBLCEwCAJIQnMOBceOGFUVVVFe3t7eUeZZNMmzYtGhoayj0GQL8JT4ABYO7cuXHXXXeVewxggBOeAAOA8AQqgfAEACAJ4QkMWO3t7fGNb3wjhg0bFjvuuGOcccYZ8ec//7nPPh9//HH85Cc/iXHjxkV1dXU0NDTEj370o+ju7o6IiFKpFJMnT46RI0fGO++80/u8Dz/8MPbZZ58YN25cfPDBB+ucYfHixVFVVRW33357/OhHP4qddtophgwZEsccc0wsX758g3+HDz74IM4555yoq6uL6urq2GOPPWL+/PlRKpV696mqqooPPvggFi1aFFVVVVFVVRXTpk3bxH9bAJtvcLkHACiXb3zjG9HQ0BDz5s2Lp59+Oq666qr405/+FL/61a9695k+fXosWrQojj322DjnnHPiv//7v2PevHlRLBbjzjvvjKqqqrjxxhvj85//fJx66qnx29/+NiIiLrjggvif//mfWLx4cQwZMmSDs1xyySVRVVUVP/zhD+Odd96JBQsWxKGHHhovvPBC1NTUfOpzSqVSHHPMMfHYY4/FKaecEvvtt1888MAD8f3vfz9WrFgRV1xxRURE3HzzzTF9+vQ48MAD4zvf+U5ERIwbN25z//UBbLoSwABzwQUXlCKidMwxx/TZ/t3vfrcUEaUXX3yxVCqVSi+88EIpIkrTp0/vs9/3vve9UkSUHn300d5t119/fSkiSs3NzaWnn366tM0225TOPPPMDc7y2GOPlSKi9Hd/93eljo6O3u133HFHKSJKV155Ze+2qVOnlsaMGdN7/6677ipFROniiy/u85rHHntsqaqqqrR06dLebUOGDClNnTp1g/MAZMlH7cCANXPmzD73TzvttIiIuO+++/r8efbZZ/fZ75xzzomIiHvvvbd323e+85047LDD4rTTTosTTzwxxo0bF3Pnzt3oWb797W/H0KFDe+8fe+yxsfPOO/fO8Gnuu+++2GabbeL0009fa75SqRT333//Rq8PkIKP2oEBa/z48X3ujxs3LgYNGhRtbW0REfHGG2/EoEGDYrfdduuz30477RR/+7d/G2+88Uaf7b/4xS9i3LhxsWTJknjyySfX+RH5xsxSVVUVu+22W+8sn+aNN96I0aNH9wnWiIh8Pt/7OEAlccQT4P9XVVW1Sdv/2uLFi3tPOnrppZc+s7kAthbCExiwlixZ0uf+0qVLo6enp/fXgcaMGRM9PT1r7ff222/He++9F2PGjOnd9uabb8Zpp50WX/3qV+Ooo46K733ve5t0xPGv1yiVSrF06dL1/lLRmDFjYuXKlbF69eo+21tbW3sf/8TGxjNAloQnMGBde+21fe5fffXVERFxxBFHRETE1772tYiIWLBgQZ/9Lr/88oiIOPLII3u3zZgxI3p6euIXv/hF3HDDDTF48OA45ZRT+lzWaH1+9atf9QnI3/zmN/Hmm2/2zvJpvva1r8WaNWvimmuu6bP9iiuuiKqqqj7PHTJkSLz33nsbNQtAVnzHExiwXn/99TjmmGPi8MMPj6eeeiqam5vjW9/6Vuy7774REbHvvvvG1KlT44Ybboj33nsvDj744PjDH/4QixYtiilTpsTkyZMjIuKmm26Ke++9N375y1/GLrvsEhF/idhCoRALFy6M7373uxucZYcddogvfvGLcdJJJ8Xbb78dCxYsiN122y1mzJixzuccffTRMXny5Dj33HOjra0t9t1333jwwQfj7rvvjjPPPLPPJZMmTJgQDz/8cFx++eUxevToGDt2bBx00EGb868PYNOV+ax6gOQ+uZzS//7v/5aOPfbY0tChQ0sjRowozZo1q9TV1dVn348++qh00UUXlcaOHVvadtttS3V1daU5c+aU/vznP5dKpVJp+fLlpeHDh5eOPvrotdb5x3/8x9KQIUNKr7322jpn+eRySrfeemtpzpw5pVGjRpVqampKRx55ZOmNN97os+9fX06pVCqVVq9eXTrrrLNKo0ePLm277bal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44EHHij3WFDxfv/738ekSZNixx13jJqammhsbIwrrrii3GOxCYQn/dbd3R0jR46M8847L/bdd99yjwNbjMcffzy+8pWvxH333RctLS0xefLkOProo+P5558v92hQ0YYMGRKzZs2Kxx9/PIrFYpx33nlx3nnnxQ033FDu0dhIwpN1evfdd2OnnXaKuXPn9m578sknY7vttotHHnkkGhoa4sorr4xvf/vbG/1TWTAQbOi9s2DBgvjBD34QBxxwQIwfPz7mzp0b48ePj//8z/8s49RQfht67+y///5x/PHHx1577RUNDQ1RKBTisMMOiyeeeKKMU7MphCfrNHLkyLjxxhvjwgsvjGeffTZWr14dJ554YsyaNSu+/OUvl3s8qFib+t7p6emJ1atXxw477FCGaaFybOp75/nnn48nn3wyDj744DJMS3+4gDwbNHPmzHj44Ydj4sSJ8dJLL8Uzzzyz1i9HHHLIIbHffvvFggULyjMkVKCNee9ERPzrv/5r/PSnP43W1tYYNWpUGSaFyrKh984uu+wS7777bnz88cdx4YUXxvnnn1/GadkUwpMN6urqir333juWL18eLS0tsc8++6y1j/CEtW3Me+eWW26JGTNmxN133x2HHnpoGaaEyrOh987rr78e77//fjz99NMxe/bsuOaaa+L4448v07RsCh+1s0F//OMfY+XKldHT0xNtbW3lHge2GBt679x2220xffr0uOOOO0Qn/D829N4ZO3Zs7LPPPjFjxow466yz4sILL0w+I/0zuNwDUNk+/PDDKBQK8c1vfjP22GOPmD59erz00ks+DoQN2NB759Zbb42TTz45brvttjjyyCPLPC1Ujk39/05PT090d3cnnpL+Ep6s17nnnhurVq2Kq666Krbffvu477774uSTT4577rknIiJeeOGFiIh4//334913340XXnghtttuu9hzzz3LODWU3/reO7fccktMnTo1rrzyyjjooIPirbfeioiImpoaV4hgwFvfe+faa6+N+vr6aGxsjIi/XJps/vz5cfrpp5d5ajZaCdbhscceKw0ePLj0xBNP9G57/fXXS8OGDSv97Gc/K5VKpVJErHUbM2ZMmSaGyrCh987BBx/8qe+dqVOnlm9oqAAbeu9cddVVpb322quUy+VKw4YNK+2///6ln/3sZ6U1a9aUcWo2hZOLAABIwslFAAAkITwBAEhCeAIAkITwBAAgCeEJAEASwhMAgCSEJwAASQhPAACSEJ4AACQhPAEASEJ4AgCQhPAESODdd9+NnXbaKebOndu77cknn4ztttsuHnnkkTJOBpBOValUKpV7CICB4L777ospU6bEk08+GXvssUfst99+8fWvfz0uv/zyco8GkITwBEho5syZ8fDDD8fEiRPjpZdeimeeeSaqq6vLPRZAEsITIKGurq7Ye++9Y/ny5dHS0hL77LNPuUcCSMZ3PAES+uMf/xgrV66Mnp6eaGtrK/c4AEk54gmQyIcffhgHHnhg7LfffrHHHnvEggUL4qWXXopRo0aVezSAJIQnQCLf//734ze/+U28+OKLsf3228fBBx8cw4cPj3vuuafcowEk4aN2gAQWL14cCxYsiJtvvjmGDRsWgwYNiptvvjmeeOKJWLhwYbnHA0jCEU8AAJJwxBMAgCSEJwAASQhPAACSEJ4AACQhPAEASEJ4AgCQhPAEACAJ4QkAQBLCEwCAJIQnAABJCE8AAJL4/wCF/ihz0ASdiwAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 800x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "np.random.seed(123)\n",
    "fang_data = [np.random.normal(0, std, 100) for std in range(1,4)]\n",
    "fig = plt.figure(figsize=(8,6))\n",
    "bplot = plt.boxplot(fang_data, notch=False, sym='s', vert=True)\n",
    "plt.xticks([1,2,3], ['x1', 'x2', 'x3'])\n",
    "plt.xlabel('x')\n",
    "plt.title('box plot')\n",
    "for components in bplot.keys():\n",
    "    for line in bplot[components]:\n",
    "        line.set_color('black') #所有线条改为黑色\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "ename": "TypeError",
     "evalue": "subplot() got an unexpected keyword argument 'ncols' and/or 'nrows'.  Did you intend to call subplots()?",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mTypeError\u001b[0m                                 Traceback (most recent call last)",
      "Cell \u001b[0;32mIn[22], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m fig, axes \u001b[39m=\u001b[39m plt\u001b[39m.\u001b[39;49msubplot(nrows\u001b[39m=\u001b[39;49m\u001b[39m1\u001b[39;49m, ncols\u001b[39m=\u001b[39;49m\u001b[39m2\u001b[39;49m, figsize\u001b[39m=\u001b[39;49m(\u001b[39m12\u001b[39;49m,\u001b[39m5\u001b[39;49m))\n\u001b[1;32m      2\u001b[0m fang_data \u001b[39m=\u001b[39m [np\u001b[39m.\u001b[39mrandom\u001b[39m.\u001b[39mnormal(\u001b[39m0\u001b[39m, std, \u001b[39m100\u001b[39m) \u001b[39mfor\u001b[39;00m std \u001b[39min\u001b[39;00m \u001b[39mrange\u001b[39m(\u001b[39m6\u001b[39m, \u001b[39m10\u001b[39m)]\n\u001b[1;32m      3\u001b[0m axes[\u001b[39m0\u001b[39m]\u001b[39m.\u001b[39mviolinplot(fang_data, showmeans\u001b[39m=\u001b[39m\u001b[39mFalse\u001b[39;00m, showmedians\u001b[39m=\u001b[39m\u001b[39mTrue\u001b[39;00m)\n",
      "File \u001b[0;32m~/.local/lib/python3.10/site-packages/matplotlib/pyplot.py:1317\u001b[0m, in \u001b[0;36msubplot\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m   1315\u001b[0m \u001b[39m# Check for nrows and ncols, which are not valid subplot args:\u001b[39;00m\n\u001b[1;32m   1316\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39m'\u001b[39m\u001b[39mnrows\u001b[39m\u001b[39m'\u001b[39m \u001b[39min\u001b[39;00m kwargs \u001b[39mor\u001b[39;00m \u001b[39m'\u001b[39m\u001b[39mncols\u001b[39m\u001b[39m'\u001b[39m \u001b[39min\u001b[39;00m kwargs:\n\u001b[0;32m-> 1317\u001b[0m     \u001b[39mraise\u001b[39;00m \u001b[39mTypeError\u001b[39;00m(\u001b[39m\"\u001b[39m\u001b[39msubplot() got an unexpected keyword argument \u001b[39m\u001b[39m'\u001b[39m\u001b[39mncols\u001b[39m\u001b[39m'\u001b[39m\u001b[39m \u001b[39m\u001b[39m\"\u001b[39m\n\u001b[1;32m   1318\u001b[0m                     \u001b[39m\"\u001b[39m\u001b[39mand/or \u001b[39m\u001b[39m'\u001b[39m\u001b[39mnrows\u001b[39m\u001b[39m'\u001b[39m\u001b[39m.  Did you intend to call subplots()?\u001b[39m\u001b[39m\"\u001b[39m)\n\u001b[1;32m   1320\u001b[0m fig \u001b[39m=\u001b[39m gcf()\n\u001b[1;32m   1322\u001b[0m \u001b[39m# First, search for an existing subplot with a matching spec.\u001b[39;00m\n",
      "\u001b[0;31mTypeError\u001b[0m: subplot() got an unexpected keyword argument 'ncols' and/or 'nrows'.  Did you intend to call subplots()?"
     ]
    }
   ],
   "source": [
    "fig, axes = plt.subplot(nrows=1, ncols=2, figsize=(12,5))\n",
    "fang_data = [np.random.normal(0, std, 100) for std in range(6, 10)]\n",
    "axes[0].violinplot(fang_data, showmeans=False, showmedians=True)\n",
    "axes[1].set_title('box plot')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.10"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
